3D激光SLAM总结及A 您所在的位置:网站首页 slam激光导航和3d slam区别 3D激光SLAM总结及A

3D激光SLAM总结及A

2024-07-15 11:20| 来源: 网络整理| 查看: 265

文章目录 一、三维激光SLAM总结1.LOAM:Lidar Odometry and Mapping in Real-time2.LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain .3.LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 二、LIO-SAM算法安装1.环境配和搭建2.lio-sam安装并运行3.ALIOM安装及运行4.解决编译报错的问题:

提示:以下是本篇文章正文内容,下面案例可供参考

一、三维激光SLAM总结 1.LOAM:Lidar Odometry and Mapping in Real-time

LOAM为清华自动化本科毕业的Zhang Ji博士在CMU读博期间,于2014年在RSS期刊发表的关于三维激光传感器的SLAM算法。

LOAM存在的问题:

没有回环检测;计算时间复杂度较高,基于三维空间中的位姿进行优化;户外可能受到各种噪声影响,例如树上摇晃的树叶,地上的杂草。而这些点未必会重复出现在前后两帧激光中。而错误的特征点将会影响位姿精度。LOAM需要提取平面点和边缘点,由于车体上下颠簸,竖直维度提取的平面点很容易造成误差。 2.LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain .

Lego-LOAM是TiXiao Shan发表在IROS2018的文章,文章叫:可变地形下的轻量级和地面优化的雷达里程计与建图。

其是以LOAM为框架衍生出的新算法,主要在于两点提升:轻量级 和 地面优化。 Lego-LOAM的contribution:1.着重于解决一些非城市化道路或非平整道路上LOAM存在的问题。2.轻量化,改进算法,使其在TX2上也可以实时运行。 Lego-LOAM有一个显著的缺陷——依赖地面。

3.LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

LIO-SAM是TixiaoShan在2020年IROS发表的Lego-LOAM续作。 实际上也是Lego-LOAM的扩展版本,添加了IMU预积分因子和GPS因子。

在这里插入图片描述 LOAM使用多传感器(三维激光、IMU、GPS)融合的方法,利用因子图优化,计算位姿; 特点:

Odometry 以IMU的frequency(要收到雷达里程计信息后才发出),这样前端频率更高;

IMU odometry提供初始估计值并做了预积分处理,同时IMU原始数据进行雷达进行运动补偿;

后端因子图优化包括四个因子,IMU预积分结合雷达里程计的帧间约束因子在预积分节点维护,其他三个在后端节点维护,分别是GPS因子、雷达里程计因子和回环检测因子。

紧耦合:IMU的零偏可以被估计,利用雷达里程计的帧间约束进行反馈,使IMU解算更加准确,提供更好的初值。

二、LIO-SAM算法安装 1.环境配和搭建

运行环境ubuntu18.04和ROS(melodic)

依赖1:下载GTSAM(也可以在github里面直接下载)

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ cd ~/Downloads/gtsam-4.0.2/ mkdir build && cd build cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF .. sudo make install -j4

在这里插入图片描述

安装过程若出现编译报错时,需将build文件删除,重新编译。

依赖2:下载Ceres(也可以在github里面直接下载)

sudo apt-get install -y libgoogle-glog-dev sudo apt-get install -y libatlas-base-dev wget -O ~/Downloads/ceres.zip https://github.com/ceres-solver/ceres-solver/archive/1.14.0.zip cd ~/Downloads/ && unzip ceres.zip -d ~/Downloads/ cd ~/Downloads/ceres-solver-1.14.0 mkdir ceres-bin && cd ceres-bin cmake ..

在这里插入图片描述

sudo make install -j4

2.lio-sam安装并运行

1. 下载源代码:(也可以在github里面直接下载)

cd ~/slam_ws/src git clone https://ghproxy.com/https://github.com/TixiaoShan/LIO-SAM.git cd .. catkin_make

这里如果编译不通过,应该是环境配置问题,或者库版本问题

makdir -p ~/catkin_ws/src cd ~/slam_ws catkin_make echo "source ~/slam_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

2. 进行lio-sam算法 LIO-SAM的作者提供了几个数据集进行测试,这里下载其中的walk数据集。作者提供地址是google云端硬盘,其下载速度感人,我这里只有十几kb/s,而这个数据集有3.7G。可以到我这里分享的百度网盘链接下载:https://pan.baidu.com/s/1cMc0EXhbiY2HWqkKlspzDg 提取码 gz7i

运行launch文件并播放数据包 roslaunch lio-sam run.launch rosbag play ~/catkin_ws/src/data/casual_walk.bag

开始播放数据包后,rviz即可自动显示当前动态建图画面。 在这里插入图片描述

3. 保存pcd建图结果 首先,需要修改params.yaml中的参数。params.yaml在~/catkin_ws/src/LIO-SAM/config文件夹下。修改该文件中SavePCD:true 和保存地址。

然后,为了避免保存还没完成,ros就已经关闭了节点,需要设置_TIMEOUT_SIGINT的值。按如下命令打开文件:

sudo gedit /opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py

在文件中找到_TIMEOUT_SIGINT,并设置为100秒。 这样,在命令窗口中按下Ctrl+C来结束run.launch的运行时,便会自动将pcd文件保存到指定地址。 最后打开最终点云地图 再次roslaunch lio-sam,等待bag跑完全程,系统会自动生成一个1210.pcd文件,这就是最终的点云地图。

pcl_viewer 1210.pcd 3.ALIOM安装及运行 ALIOM安装 cd ~/slam_ws/src git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git cd .. catkin_make source ~/.bashrc

使用NSH indoor outdoor数据集运行项目 nsh_indoor_outdoor.bag下载地址 链接: https://pan.baidu.com/s/1psN_qIht28uyyks5AVnhmA密码: tec7

使用Kitti数据集运行项目

Kitti数据下载路径(请将以下文件下载下来) 链接: https://pan.baidu.com/s/1ruXQ0pfifktpoU-Fr_x0QQ 密码: o2jl 只放入kitti数据集中的序列号为00的部分,包括 data_odometry_gray data_odometry_poses data_odometry_velodyne 全量数据集请自行下载

数据集目录结构(以下只放入序列为00的部分)

data_odometry ├── results(放入ground_truth即data_odometry_poses) ├── sequences(放入灰度图data_odometry_gray) │…└── 00 │…├── image_0 │…└── image_1 └── velodyne(放入点云data_odometry_velodyne) …└── sequences … └── 00 … └── velodyne

修改kitti_helper.launch文件

以下为例,主要修改项为: 将dataset_folder修改为数据集目录位置 自行决定将to_bag是否修改为true,若为true则会打包生成数据集的bag文件 将output_bag_file修改为要输出的bag文件路径

ALIOM运行 #16线激光雷达 roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch rosbag play YOUR_DATASET_FOLDER/nsh_indoor_outdoor.bag #64线激光雷达 roslaunch aloam_velodyne aloam_velodyne_HDL_64.launch roslaunch aloam_velodyne kitti_helper.launch 4.解决编译报错的问题:

1.安装Ceres 出现Can’t find Google Log (glog). 需要安装glog,

https://github.com/google/glog/releases/tag/v0.4.0

先从Github下载源码,然后解压进入文件夹,命令行敲下:

mkdir build cd build cmake .. sudo make install -j4

然后重新编译ceres,发现编译通过了。

2.编译LVI-SAM源码出现错误:GTSAM was built against a different version of Eigen.

因为GTSAM的eigen版本跟系统版本冲突了,需要修改GTSAM的eigen依赖库的版本,改为系统的eigen。

在CMakeLists.txt文件中if(GTSAM_USE_SYSTEM_EIGEN)前面添加如下代码:

set(GTSAM_USE_SYSTEM_EIGEN ON),重新编译就可以了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有